# -*- coding: utf-8 -*-
import sys

sys.path.append('../')
from common.config import *
from db.mysql import MysqlClient
from itertools import product
import requests, json
from common.helper import Helper



class Spider(object):
    def __init__(self):
        self.mysql = MysqlClient()
        self.name = "横琴优乐保定期医疗保险"

    # 生成产品数据
    def genProductInfo(self):
        plan = {
            # 年龄段
            "year": [str(i) for i in range(0, 61)],
            # 有无社保
            "socialSec": ["Y", "N"],
            # 交费方式
            "payType": ["年交", "月交"],
            # 交费间隔
            "interval": ["6"],
            # 保障期限
            "expire": ["6年"],
            # 保额
            "money": ["24000000"]

        }
        for v in product(plan["year"], plan["socialSec"], plan["payType"], plan["interval"], plan["expire"],
                         plan["money"]):
            data = Helper.formatProductInfo(plan, v)
            self.mysql.cursor.execute(domain[self.name]["insert_sql"].format(**data))
            self.mysql._conn.commit()
            print(domain[self.name]["insert_sql"].format(**data))

    # 执行爬虫
    def requestJson(self, dt=None):

        data = {"saleItemId": "10072", "returnAmount": "false", "birthDate": "{0}-01-01".format( 2020-int(dt["year"])), "payMethod": "1" if dt["payType"] == "月交" else "12",
                "hasSocialSecurity": "0" if dt['socialSec'] == "N" else "1", "premPeriodNumber": "term_6", "policyPeriodNumber": "term_6"}
        payload = json.dumps( data )
        r = requests.post( url = domain[self.name]["url"],headers=domain[self.name]["header"],data=payload)
        if r.status_code == 200 and r.json()["success"]:
            price = r.json()["data"]["totalPermium"]
            data = {
                "name":self.name,
                "id":dt["id"],
                "price":price
            }
            print( data )
            self.mysql.updatePrice( data )
        else:
            data = {
                "name": self.name,
                "id": dt["id"],
                "state": 3
            }
            self.mysql.updateTask( data )
            print("/*更新产品价格数据失败:%d*/"%dt["id"])

    def main(self):
        while True:
            # 随机领取一条数据
            dt = self.mysql.randTask(self.name)
            if not dt:
                print("产品价格抓取完成~~~")
                return

            # 任务执行状态
            data = {
                "name": self.name,
                "id": dt["id"],
                "state": 1
            }
            self.mysql.updateTask(data)

            self.requestJson(dt)
